package com.rem.hutool.my6JavaBean;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;

/**
 * 把一个拥有对属性进行set和get方法的类，我们就可以称之为JavaBean。实际上JavaBean就是一个Java类，
 * 在这个Java类中就默认形成了一种规则——对属性进行设置和获得。而反之将说Java类就是一个JavaBean，
 * 这种说法是错误的，因为一个java类中不一定有对属性的设置和获得的方法（也就是不一定有set和get方法）。
 *
 * @author Rem
 * @date 2020-08-24
 */

public class BeanUtilDemo {

    public static void main(String[] args) {
        boolean isBean = BeanUtil.isBean(ArrayList.class);
        System.err.println(isBean);

        A zhangsan = new A(18, "zhangsan");
        A2 a2 = new A2();
        BeanUtil.copyProperties(zhangsan, a2, CopyOptions.create().ignoreCase().ignoreError().ignoreNullValue());
        System.err.println(a2);


    }

    @AllArgsConstructor
    @NoArgsConstructor
    @Data
    static class A {
        private Integer age;
        private String name;
    }

    @AllArgsConstructor
    @NoArgsConstructor
    @Data
    static class A2 {
        private Integer age;
        private String name;
        private String sex;
    }
}
